package com.clt.ess.service;
import com.clt.ess.gjzw.domain.FileData;
import com.clt.ess.gjzw.domain.FilePackage;
import com.clt.ess.gjzw.domain.SealCodeData;
import com.clt.ess.gjzw.domain.TaskNumData;
import com.clt.ess.gjzw.domain.applyRandom.ApplyRandomRequest;
import com.clt.ess.gjzw.domain.applyRandom.ApplyRandomResponse;
import com.clt.ess.gjzw.domain.applySealCode.ApplySealCodeRequest;
import com.clt.ess.gjzw.domain.applySealCode.ApplySealCodeResponse;
import com.clt.ess.gjzw.domain.confirmReceipt.ConfirmReceiptRequest;
import com.clt.ess.gjzw.domain.confirmReceipt.ConfirmReceiptRequestData;
import com.clt.ess.gjzw.domain.confirmReceipt.ConfirmReceiptResponse;
import com.clt.ess.gjzw.domain.confirmReceipt.ConfirmReceiptResponseData;
import com.clt.ess.gjzw.domain.revocationSealInfo.*;
import com.clt.ess.gjzw.domain.updateProtectKey.*;
import com.clt.ess.gjzw.domain.uploadRecordInfos.*;

import java.util.List;

public interface IGjzwService {

    String getRandomNum(ApplyRandomRequest request);

    UploadRecordInfosResponse uploadRecordInfo(UploadRecordInfosRequest request);

    FilePackage uploadRecordInfoCheckResult(UploadRecordInfosCheckResultRequest request);

    UpdateProtectKeyResponse updateProtectKey(UpdateProtectKeyRequest request);

    FilePackage updateProtectKeyCheckResult(UpdateProtectKeyCheckResultRequest request);

    RevocationSealInfoResponse revocationSealInfo(RevocationSealInfoRequest request);

    String revocationSealInfoCheckResult(RevocationSealInfoCheckResultRequest request);

    ApplySealCodeResponse applySealCode(ApplySealCodeRequest request);

    String confirmReceipt(ConfirmReceiptRequest request);

    /**
     * 获取唯一赋码(电子印章制作)
     * @param applicantCert
     * @param areaCode
     * @return
     */
    String getSealCode(String applicantCert,String areaCode);
    /**
     * 上传备案信息接口(电子印章制作)
     * @param applicantCert
     * @param data
     * @return
     */
    TaskNumData uploadRecordInfosGetTaskId(String applicantCert, List<UploadRecordInfosRequestData> data);

    /**
     * 查询并下载公安下发数据(电子印章制作)
     * @param taskNumData
     * @return
     */
    FilePackage uploadRecordInfoCheckResult(TaskNumData taskNumData);


    /**
     * 发送回执(电子印章制作)
     * @param applicantCert
     * @param data
     * @return
     */
    String  confirmReceiptRequest(String applicantCert, List<ConfirmReceiptRequestData> data);

    /**
     * 上传电子印章撤销信息(电子印章撤销)
     * @param applicantCert
     * @param data
     * @return
     */
    TaskNumData revocationSealInfo(String applicantCert,List<RevocationSealInfoRequestData> data);

    /**
     * 业务服务：查询结果(电子印章撤销)
     * @param data
     * @return
     */
    String revocationSealInfoCheckResult(TaskNumData data);

    /**
     * 上传保护密钥更新信息(电子印章更新)
     * @param applicantCert
     * @param data
     * @return
     */
    TaskNumData updateProtectKey(String applicantCert,List<UpdateProtectKeyRequestData> data);

    /**
     * 业务服务：查询结果(电子印章更新)
     * @param data
     * @return
     */
    FilePackage updateProtectKeyCheckResult(TaskNumData data);
}
